Added read-only support for Jogmap files.
authorrobertl <robertl>
Sun, 11 Oct 2009 21:20:27 +0000 (21:20 +0000)
committerrobertl <robertl>
Sun, 11 Oct 2009 21:20:27 +0000 (21:20 +0000)
Makefile.in
jogmap.c [new file with mode: 0644]
reference/track/jogmap.xml [new file with mode: 0644]
vecs.c
xmldoc/formats/jogmap.xml [new file with mode: 0644]

index 97bd8ddf2751cf60e0cd3131866e9713999d39fb..2afcacb5d64a93596965949d5ac417fdec06a413 100644 (file)
@@ -64,7 +64,7 @@ ALL_FMTS=$(MINIMAL_FMTS) gtm.o gpsutil.o pcx.o cetus.o copilot.o \
        igo8.o gopal.o humminbird.o mapasia.o gnav_trl.o navitel.o ggv_ovl.o \
        jtr.o sbp.o sbn.o mmo.o skyforce.o itracku.o v900.o delbin.o \
        pocketfms_bc.o pocketfms_fp.o pocketfms_wp.o naviguide.o enigma.o \
-       vpl.o teletype.o \
+       vpl.o teletype.o jogmap.o \
 
 FMTS=@FMTS@
 
diff --git a/jogmap.c b/jogmap.c
new file mode 100644 (file)
index 0000000..2740b9e
--- /dev/null
+++ b/jogmap.c
@@ -0,0 +1,130 @@
+/* 
+
+       Support for XML files from jogmap.de
+
+       Copyright (C) 2009 Robert Lipe  robertlipe@gpsbabel.org
+
+       This program is free software; you can redistribute it and/or modify
+       it under the terms of the GNU General Public License as published by
+       the Free Software Foundation; either version 2 of the License, or
+       (at your option) any later version.
+
+       This program is distributed in the hope that it will be useful,
+       but WITHOUT ANY WARRANTY; without even the implied warranty of
+       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+       GNU General Public License for more details.
+
+       You should have received a copy of the GNU General Public License
+       along with this program; if not, write to the Free Software
+       Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#include "defs.h"
+#include "xmlgeneric.h"
+#include "jeeps/gpsmath.h"
+#include "garmin_tables.h"
+
+static route_head *trk;
+static gbfile *fout;
+
+static arglist_t jogmap_args[] = 
+{
+       ARG_TERMINATOR
+};
+
+#define MYNAME "xol"
+
+#if ! HAVE_LIBEXPAT
+void
+jogmap_rd_init(const char *fname)
+{
+       fatal(MYNAME ": This build excluded \"" MYNAME "\" support because expat was not installed.\n");
+}
+
+void
+jogmap_read(void)
+{
+}
+
+#else
+
+static xg_callback     jogmap_shape, xol_shape_end;
+static xg_callback     jogmap_waypt, xol_overlay;
+
+#define XOL "/overlays/overlay"
+
+
+
+static void
+jogmap_markers(const char *args, const char **attrv)
+{
+       trk = route_head_alloc();
+       track_add_head(trk);
+}
+
+static void
+jogmap_marker(const char *args, const char **attrv)
+{
+       const char **avp = &attrv[0];
+       waypoint *wpt = waypt_new();
+
+        while (*avp) {
+               if (strcmp(avp[0], "lat") == 0) {
+                       sscanf(avp[1], "%lf", 
+                               &wpt->latitude);
+               } else
+               if (strcmp(avp[0], "lng") == 0) {
+                       sscanf(avp[1], "%lf", 
+                               &wpt->longitude);
+               }
+
+               avp+=2;
+       }
+
+       if (trk) track_add_wpt(trk, wpt);
+}
+
+static
+xg_tag_mapping jogmap_map[] = {
+       { jogmap_markers,       cb_start,       "/markers" },
+       { jogmap_marker,        cb_start,       "/markers/marker" },
+       { NULL,                 0,              NULL }
+};
+
+static void 
+jogmap_rd_init(const char *fname)
+{
+       trk = NULL;
+       xml_init(fname, jogmap_map, NULL);
+}
+
+static void 
+jogmap_read(void)
+{
+       xml_read();
+}
+
+#endif
+
+static void 
+jogmap_rd_deinit(void)
+{
+       xml_deinit();
+}
+
+ff_vecs_t jogmap_vecs = {
+       ff_type_file,
+       { ff_cap_none,          /* waypoints */
+         ff_cap_read,          /* tracks */
+         ff_cap_none },        /* routes */
+       jogmap_rd_init, 
+       NULL,   
+       jogmap_rd_deinit,
+       NULL,
+       jogmap_read,
+       NULL,
+       NULL, 
+       jogmap_args,
+       CET_CHARSET_UTF8, 0
+};
diff --git a/reference/track/jogmap.xml b/reference/track/jogmap.xml
new file mode 100644 (file)
index 0000000..099cadd
--- /dev/null
@@ -0,0 +1,42 @@
+<markers>
+<marker lat="52.52690083230202" lng="13.405251502990723" zoom="15"/>
+<marker lat="52.53277501350654" lng="13.408598899841309"/>
+<marker lat="52.5340802804082" lng="13.404607772827148"/>
+<marker lat="52.534967839739444" lng="13.404178619384766"/>
+<marker lat="52.53517667462188" lng="13.403406143188477"/>
+<marker lat="52.53943146906928" lng="13.400144577026367"/>
+<marker lat="52.545956426276234" lng="13.395509719848633"/>
+<marker lat="52.544677611082754" lng="13.390789031982422"/>
+<marker lat="52.54253746965676" lng="13.383021354675293"/>
+<marker lat="52.54358145411929" lng="13.38061809539795"/>
+<marker lat="52.54029281898408" lng="13.375682830810547"/>
+<marker lat="52.54000570422354" lng="13.370447158813477"/>
+<marker lat="52.537212762674194" lng="13.36559772491455"/>
+<marker lat="52.53580317330981" lng="13.363323211669922"/>
+<marker lat="52.52979885989202" lng="13.369073867797852"/>
+<marker lat="52.52671806739541" lng="13.370532989501953"/>
+<marker lat="52.521078090759545" lng="13.370747566223145"/>
+<marker lat="52.52081696319122" lng="13.379201889038086"/>
+<marker lat="52.519876891093546" lng="13.380017280578613"/>
+<marker lat="52.51969409696076" lng="13.380231857299805"/>
+<marker lat="52.5199813445422" lng="13.382506370544434"/>
+<marker lat="52.52060806001903" lng="13.384523391723633"/>
+<marker lat="52.52254037645868" lng="13.387742042541504"/>
+<marker lat="52.52280149378294" lng="13.391518592834473"/>
+<marker lat="52.5225926000477" lng="13.394179344177246"/>
+<marker lat="52.52220092161672" lng="13.396754264831543"/>
+<marker lat="52.5219136885478" lng="13.397870063781738"/>
+<marker lat="52.52133921677571" lng="13.400144577026367"/>
+<marker lat="52.52081696319122" lng="13.400959968566895"/>
+<marker lat="52.521469779201745" lng="13.402719497680664"/>
+<marker lat="52.52243592909437" lng="13.403663635253906"/>
+<marker lat="52.522905940278065" lng="13.403749465942383"/>
+<marker lat="52.52342816902858" lng="13.404994010925293"/>
+<marker lat="52.52353261403365" lng="13.406281471252441"/>
+<marker lat="52.523454280303135" lng="13.407225608825684"/>
+<marker lat="52.524759824241585" lng="13.40808391571045"/>
+<marker lat="52.528154056888766" lng="13.40954303741455"/>
+<marker lat="52.52867622324605" lng="13.409285545349121"/>
+<marker lat="52.52930281468008" lng="13.407397270202637"/>
+<marker lat="52.53126085529294" lng="13.408899307250977"/>
+</markers>
diff --git a/vecs.c b/vecs.c
index 45497f11ff49c85d18c30513cbbad8cc4ac25279..302b6314d01e8c71d10a6d155bcae22a758429a7 100644 (file)
--- a/vecs.c
+++ b/vecs.c
@@ -167,6 +167,7 @@ extern ff_vecs_t pocketfms_wp_vecs;
 extern ff_vecs_t enigma_vecs;
 extern ff_vecs_t vpl_vecs;
 extern ff_vecs_t teletype_vecs;
+extern ff_vecs_t jogmap_vecs;
 
 static
 vecs_t vec_list[] = {
@@ -977,6 +978,12 @@ vecs_t vec_list[] = {
                 "SkyTraq Venus based loggers Binary File Format",
                 "bin"
         },
+        {
+                &jogmap_vecs,
+                "jogmap",
+                "Jogmap.de XML format",
+                "xml"
+        },
 #endif // MAXIMAL_ENABLED
        {
                NULL,
diff --git a/xmldoc/formats/jogmap.xml b/xmldoc/formats/jogmap.xml
new file mode 100644 (file)
index 0000000..2cf170b
--- /dev/null
@@ -0,0 +1,3 @@
+<para>
+ This read-only format reads the XML marker files from <ulink url="http://jogmap.de"> as tracks.  Each "markers" entry is a new track with each "marker" entry being a trackpoint.
+</para>